package com.ruoyi.depot.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 库存变动明细对象 tb_local_inventory_details
 * 
 * @author luxiaoyu
 * @date 2024-12-20
 */
public class LocalInventoryDetails extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 库存变动明细的唯一标识 */
    private String inventoryDetailId;

    /** 关联库存表ID */
    private String inventoryId;

    /** 产品SKU */
    @Excel(name = "产品SKU")
    private String sku;

    /** 仓库ID */
    @Excel(name = "仓库ID")
    private Long warehouseId;

    /** 仓库名称 */
    @Excel(name = "仓库名称")
    private String warehouseName;

    /** 产品名称 */
    @Excel(name = "产品名称")
    private String productName;

    /** 产品图片 */
    @Excel(name = "产品图片")
    private List<String> productImage;

    /** 操作人 */
    @Excel(name = "操作人")
    private String operatorName;

    /** 操作时间 */
    @Excel(name = "操作时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date operatingTime;

    /** 变动类型: 1-入库, 2-出库, 3-调整, 4-待检变动, 5-盘点变动 */
    @Excel(name = "变动类型: 1-入库, 2-出库, 3-调整, 4-待检变动, 5-盘点变动")
    private Integer changeType;

    /** 变动数量（正数表示增加，负数表示减少） */
    @Excel(name = "变动数量", readConverterExp = "正=数表示增加，负数表示减少")
    private BigDecimal quantity;

    /** 变动前数量 */
    @Excel(name = "变动前数量")
    private BigDecimal previousQuantity;

    /** 变动后数量 */
    @Excel(name = "变动后数量")
    private BigDecimal postChangeQuantity;

    /** 变动日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "变动日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date changeDate;

    /** 关联的单据ID（如采购订单ID或销售订单ID） */
    @Excel(name = "关联的单据ID", readConverterExp = "如=采购订单ID或销售订单ID")
    private String referenceId;

    /** 备注信息 */
    @Excel(name = "备注信息")
    private String notes;

    /** 记录创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "记录创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 记录最后更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "记录最后更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    public String getInventoryDetailId() {
        return inventoryDetailId;
    }

    public void setInventoryDetailId(String inventoryDetailId) {
        this.inventoryDetailId = inventoryDetailId;
    }

    public String getInventoryId() {
        return inventoryId;
    }

    public void setInventoryId(String inventoryId) {
        this.inventoryId = inventoryId;
    }

    public BigDecimal getPreviousQuantity() {
        return previousQuantity;
    }

    public void setPreviousQuantity(BigDecimal previousQuantity) {
        this.previousQuantity = previousQuantity;
    }

    public BigDecimal getPostChangeQuantity() {
        return postChangeQuantity;
    }

    public void setPostChangeQuantity(BigDecimal postChangeQuantity) {
        this.postChangeQuantity = postChangeQuantity;
    }

    public String getWarehouseName() {
        return warehouseName;
    }

    public void setWarehouseName(String warehouseName) {
        this.warehouseName = warehouseName;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public List<String> getProductImage() {
        return productImage;
    }

    public void setProductImage(List<String> productImage) {
        this.productImage = productImage;
    }

    public void setSku(String sku)
    {
        this.sku = sku;
    }

    public String getSku() 
    {
        return sku;
    }
    public void setWarehouseId(Long warehouseId) 
    {
        this.warehouseId = warehouseId;
    }

    public Long getWarehouseId() 
    {
        return warehouseId;
    }
    public String getOperatorName() {
        return operatorName;
    }

    public void setOperatorName(String operatorName) {
        this.operatorName = operatorName;
    }

    public Date getOperatingTime() {
        return operatingTime;
    }

    public void setOperatingTime(Date operatingTime) {
        this.operatingTime = operatingTime;
    }

    public Integer getChangeType() {
        return changeType;
    }

    public void setChangeType(Integer changeType) {
        this.changeType = changeType;
    }
    public void setQuantity(BigDecimal quantity)
    {
        this.quantity = quantity;
    }
    public BigDecimal getQuantity()
    {
        return quantity;
    }
    public void setChangeDate(Date changeDate) 
    {
        this.changeDate = changeDate;
    }

    public Date getChangeDate() 
    {
        return changeDate;
    }

    public String getReferenceId() {
        return referenceId;
    }

    public void setReferenceId(String referenceId) {
        this.referenceId = referenceId;
    }

    public void setNotes(String notes)
    {
        this.notes = notes;
    }

    public String getNotes() 
    {
        return notes;
    }
    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }
    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("inventoryDetailId", getInventoryDetailId())
            .append("inventoryId", getInventoryId())
            .append("sku", getSku())
            .append("warehouseId", getWarehouseId())
            .append("operatorName", getOperatorName())
            .append("changeType", getChangeType())
            .append("quantity", getQuantity())
            .append("changeDate", getChangeDate())
            .append("referenceId", getReferenceId())
            .append("notes", getNotes())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .toString();
    }
}
